﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace AppGene.DataModel
{
    /// <summary>
    /// The class provides constants for SQL Server data types.
    /// </summary>
    public class SqlServerNativeDataType
    {
        /// <summary>
        /// SQL Server data type: bigint. 
        /// </summary>
        const string BigInt = "bigint";

        /// <summary>
        /// SQL Server data type: binary. Equivalent to DbType.Binary (not exact same).
        /// </summary>
        const string Binary = "binary";

        /// <summary>
        /// SQL Server data type: bit. Equivalent to DbType.Boolean.
        /// </summary>
        const string Bit = "bit";

        /// <summary>
        /// SQL Server data type: char. Equivalent to DbType.AnsiStringFixedLength.
        /// </summary>
        const string Char = "char";

        /// <summary>
        /// SQL Server data type: date. Equivalent to DbType.Date.
        /// </summary>
        const string Date = "date";

        /// <summary>
        /// SQL Server data type: datetime. Equivalent to DbType.DateTime.
        /// </summary>
        const string DateTime = "datetime";

        /// <summary>
        /// SQL Server data type: datetime2. Equivalent to DbType.DateTime2.
        /// </summary>
        const string DateTime2 = "datetime2";

        /// <summary>
        /// SQL Server data type: datetimeoffset. Equivalent to DbType.DateTimeOffset.
        /// </summary>
        const string DateTimeOffset = "datetimeoffset";

        /// <summary>
        /// SQL Server data type: decimal. Equivalent to DbType.Decimal.
        /// </summary>
        const string Decimal = "decimal";

        /// <summary>
        /// SQL Server data type: float. Equivalent to DbType.Double.
        /// </summary>
        const string Float = "float";

        /// <summary>
        /// SQL Server data type: geography. No DbType Equivalent.
        /// </summary>
        const string Geography = "geography";

        /// <summary>
        /// SQL Server data type: geometry. No DbType Equivalent.
        /// </summary>
        const string Geometry = "geometry";

        /// <summary>
        /// SQL Server data type: hierarchyid. No DbType Equivalent.
        /// </summary>
        const string HierarchyId = "hierarchyid";

        /// <summary>
        /// SQL Server data type: image. Equivalent to DbType.Binary with max length.
        /// </summary>
        [Obsolete("Please use 'varbinary(max)' instead.")]
        const string Image = "image";

        /// <summary>
        /// SQL Server data type: int. Equivalent to DbType.Int32.
        /// </summary>
        const string Int = "int";

        /// <summary>
        /// SQL Server data type: money. 
        /// </summary>
        const string Money = "money";

        /// <summary>
        /// SQL Server data type: nchar. Equivalent to DbType.StringFixedLength.
        /// </summary>
        const string NChar = "nchar";

        /// <summary>
        /// SQL Server data type: ntext. Equivalent to DbType.StringFixedLength with max length.
        /// </summary>
        [Obsolete("Please use 'nvarchar(max)' instead.")]
        const string NText = "ntext";

        /// <summary>
        /// SQL Server data type: numeric. Equivalent to DbType.Decimal.
        /// </summary>
        const string Numeric = "numeric";

        /// <summary>
        /// SQL Server data type: nvarchar. Equivalent to DbType.String.
        /// </summary>
        const string NVarChar = "nvarchar";

        /// <summary>
        /// SQL Server data type: real. Equivalent to DbType.Single.
        /// </summary>
        const string Real = "real";

        /// <summary>
        /// SQL Server data type: smalldatetime. Equivalent to DbType.DateTime.
        /// </summary>
        const string SmallDateTime = "smalldatetime";

        /// <summary>
        /// SQL Server data type: smallint. Equivalent to DbType.Int16.
        /// </summary>
        const string SmallInt = "smallint";

        /// <summary>
        /// SQL Server data type: smallmoney. Equivalent to DbType.Decimal.
        /// </summary>
        const string SmallMoney = "smallmoney";

        /// <summary>
        /// SQL Server data type: sql_variant. Equivalent to DbType.Object.
        /// </summary>
        const string SqlVariant = "sql_variant";

        /// <summary>
        /// SQL Server data type: text. Equivalent to DbType.AnsiString with max length.
        /// </summary>
        [Obsolete("Please use 'varchar(max)' instead.")]
        const string Text = "text";

        /// <summary>
        /// SQL Server data type: time. Equivalent to DbType.Time.
        /// </summary>
        const string Time = "time";

        /// <summary>
        /// SQL Server data type: timestamp. No DbType Equivalent.
        /// </summary>
        const string TimeStamp = "timestamp";

        /// <summary>
        /// SQL Server data type: tinyint. Equivalent to DbType.Byte.
        /// </summary>
        const string TinyInt = "tinyint";

        /// <summary>
        /// SQL Server data type: uniqueidentifier. Equivalent to DbType.Guid.
        /// </summary>
        const string UniqueIdentifier = "uniqueidentifier";

        /// <summary>
        /// SQL Server data type: varbinary. Equivalent to DbType.Binary.
        /// </summary>
        const string VarBinary = "varbinary";

        /// <summary>
        /// SQL Server data type: varchar. Equivalent to DbType.AnsiString.
        /// </summary>
        const string VarChar = "varchar";

        /// <summary>
        /// SQL Server data type: 'xml'. Equivalent to DbType.Xml.
        /// </summary>
        const string Xml = "xml";
    }
}
